package org.alvin.xl.hlht.utils;

import cn.hutool.crypto.symmetric.AES;

/**
 * @author 小蓝快充-唐植超
 * @note AES加密器
 * @date 2023-09-10
 */
public class AESUtil {

    /**
     * 加密包含偏移量
     *
     * @param data 待加密内容
     * @param key  加密秘钥
     * @return 十六进制字符串
     */
    public static String encrypt(String data, String key, String vi) {
        AES aes = new AES("CBC", "PKCS5Padding",
                // 密钥，不可更改 (16位)
                key.getBytes(),
                // iv加量
                vi.getBytes());
        // 加密为16进制表示
        String encryptHex = aes.encryptBase64(data);
        return encryptHex;
    }

    /**
     * 解密,包含偏移量
     *
     * @param data 待解密内容(十六进制字符串)
     * @param key  加密秘钥
     * @return
     */
    public static String decrypt(String data, String key, String vi) {
        AES aes = new AES("CBC", "PKCS5Padding",
                // 密钥，不可更改 (16位)
                key.getBytes(),
                // iv加盐
                vi.getBytes());
        // 加密为16进制表示
        String decryptStr = aes.decryptStr(data);
        return decryptStr;
    }
}